package com.yxw.yxnet_cd_center.customer_service.service;


import io.swagger.annotations.ApiOperation;
import com.yxw.yxnet_cd_center.customer_service.dto.ClientFiledServiceDTO;
import com.yxw.yxnet_cd_center.common.utils.BaseResult;
import com.yxw.yxnet_cd_center.customer_service.dto.ClientFiledDTO;
import com.yxw.yxnet_cd_center.customer_service.dto.ClientHelpDocuDTO;
import com.yxw.yxnet_cd_center.customer_service.dto.ClientHelpDocuListDTO;
import com.yxw.yxnet_cd_center.customer_service.dto.ClientSendTalkDTO;
import com.yxw.yxnet_cd_center.customer_service.dto.SubscribeTopicResultDTO;
import com.yxw.yxnet_cd_center.customer_service.dto.ClientScoreDTO;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
//import org.springframework.http.server.reactive.ServerHttpRequest;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
/*
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.List;
import com.yxw.customer_service_center.customer_service.entity.YxcscClientFiledServiceEntity;
import com.yxw.customer_service_center.customer_service.dto.YxcscClientFiledServiceDTO;
import com.yxw.customer_service_center.customer_service.vo.MqttServerInfor2AndroidVO;
import com.yxw.customer_service_center.customer_service.dto.CustomerRequestServiceDTO;
//import com.baomidou.mybatisplus.extension.service.IService;
//public interface IYxcscClientFiledServiceService  extends IService<YxcscClientFiledServiceDTO>{
*/

/**
 * 客户会话所有处理
 * @author hjx
 * @date 2023.09.22
 */
public interface IYxcscClientFiledServiceService  
{
    /*** 
    * 获取Mqtt服务器信息
    * @param userId
    * @return MqttServerInforVO
    **/
    @ApiOperation(value ="根据用户Id获取Mqtt服务器信息，以及需要订阅的主题 ",notes = "此接口用于js端,根据用户Id获取Mqtt服务器信息，以及需要订阅的主题")
    public BaseResult getMqttInfoNotSafe(ClientFiledDTO oClientFiledDTO);       
    
    /*** 
    * 获取Mqtt服务器信息
    * @param userId
    * @return MqttServerInforVO
    **/
    @ApiOperation(value ="根据用户Id获取Mqtt服务器信息，以及需要订阅的主题 ",notes = "此接口用于js端,根据用户Id获取Mqtt服务器信息，以及需要订阅的主题")
    public BaseResult getMqttInfo(HttpServletRequest httpRequest,ClientFiledDTO oClientFiledDTO);   
    
    /*** 
    * 客户申请服务接口
    * @param oClientFiledServiceDTO
    * @return Integer
    **/
    public BaseResult filedService(ClientFiledServiceDTO oClientFiledServiceDTO);
    /*** 
    * 在线会话发送接口
    * @param oYxcscClientFiledServiceDTO
    * @return Integer
    **/
    public BaseResult  sendTalk(ClientSendTalkDTO oClientSendTalkDTO);
    /*** 
    * C端MQTT主题订阅结果知会服务器接口
    * @param oClientFiledDTO
    * @return BaseResult
    **/    
    public BaseResult subscribeTopicResult(SubscribeTopicResultDTO oSubscribeTopicResultDTO);
    /*** 
    * 客户申请完成某个服务接口
    * @param userId
    * @return MqttServerInforVO
    **/
    public BaseResult clientFinishService(String userId,String sessionId);
    /**
     * 客户对服务的评分接口
     * @param ClientSendTalkDTO 会话内容
     * @return 
     */
    public BaseResult<String> serviceScore(ClientScoreDTO oClientScoreDTO);
    
    /**
     * 获取常见问题帮助文档列表接口
     * @param ClientSendTalkDTO 会话内容
     * @return 
     */
    public BaseResult recDocuList(ClientHelpDocuListDTO oClientHelpDocuListDTO);
    /**
     * 获取常见问题帮助文档列表接口
     * @param ClientSendTalkDTO 会话内容
     * @return 
     */
    public BaseResult recDocuDedail(ClientHelpDocuDTO oClientHelpDocuDTO);
    
    /*** 
    *客服撤回/删除聊天记录接口
    * @param customerId 客服Id
    * @param recordId 聊天记录Id
    * @param operationState 操作状态:0正常的消息,1删除的消息,2撤回的消息
    * @return BaseResult
    **/
    public BaseResult clientRevokeServiceTalkRecord(String clientId,Long recordId,Integer operationState);
    /*** 
    * 删除
    * @param id
    * @return Integer
    **/
    //public Integer deleteById(String id);
    /*** 
    * 根据id查找
    * @param id
    * @return YxcscClientFiledServiceEntity
    **/
    //public YxcscClientFiledServiceEntity selectById(String id);
    /*** 
    * 自定义查询
    * @param oYxcscClientFiledServiceDTO
    * @return List<YxcscClientFiledServiceEntity>
    **/
    //public List<YxcscClientFiledServiceEntity> selectList(YxcscClientFiledServiceDTO oYxcscClientFiledServiceDTO);
    /*** 
    * 自定义统计
    * @param oYxcscClientFiledServiceDTO
    * @return Integer
    **/
    //public Integer selectCount(YxcscClientFiledServiceDTO oYxcscClientFiledServiceDTO);
    /*** 
    * 自定义分页查询
    * @param currentPage 当前页
    * @param pageSize 分页大小
    * @param oYxcscClientFiledServiceDTO
    * @return Page
    **/
    //public Page selectPage(int currentPage,int pageSize,YxcscClientFiledServiceDTO oYxcscClientFiledServiceDTO);
}
    

